home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_04 / saks / xrt.cpp < prev    next >
C/C++ Source or Header  |  1994-02-09  |  1KB  |  65 lines

  1.  
  2. ----------
  3.  
  4. Listing 3 - xrt member function definitions
  5.  
  6. //
  7. // xrt.cpp - cross-reference table
  8. //
  9. #include <stdio.h>
  10. #include <string.h>
  11.  
  12. #include "xrt.h"
  13.  
  14. class treenode
  15.     {
  16. public:
  17.     treenode(const char *w, unsigned n);
  18.     ~treenode();
  19.     char *word;
  20.     lns lines;
  21.     xrt left, right;
  22.     };
  23.  
  24. treenode::treenode(const char *w, unsigned n) : lines(n)
  25.     {
  26.     word = strcpy(new char[strlen(w) + 1], w);
  27.     }
  28.  
  29. treenode::~treenode()
  30.     {
  31.     delete [] word;
  32.     }
  33.  
  34. xrt::~xrt()
  35.     {
  36.     delete root;
  37.     }
  38.  
  39. void xrt::add(const char *w, unsigned n)
  40.     {
  41.     int cond;
  42.  
  43.     if (root == 0)
  44.         root = new treenode(w, n);
  45.     else if ((cond = strcmp(w, root->word)) == 0)
  46.         root->lines.add(n);
  47.     else if (cond < 0)
  48.         root->left.add(w, n);
  49.     else
  50.         root->right.add(w, n);
  51.     }
  52.  
  53. void xrt::print()
  54.     {
  55.     if (root != 0)
  56.         {
  57.         root->left.print();
  58.         printf("%12s: ", root->word);
  59.         root->lines.print();
  60.         printf("\n");
  61.         root->right.print();
  62.         }
  63.     }
  64.  
  65.